﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Entidades;
using DAO;


public partial class A_modificarHorario : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        lblError.Text = "";

        if (!Page.IsPostBack)
        {
            cargaComboHoras();
            if (Request.QueryString.Count != 0)
            {
                txtIdClase.Value = Request.QueryString[0];
                cargarGrilla();
                
            }
            else
            {
                lblError.Text = "Por favor vuelva al listado de clases y seleccione la clase a la que quiera editar horarios";
            }

        }
    }

    private void cargarGrilla()
    {
        Clase clase = new Clase();
        clase.Id = int.Parse(txtIdClase.Value);
        clase = ClaseDAO.buscarClaseId(clase);
        dgvHorarios.DataSource = clase.ListadoHorarios;
        dgvHorarios.DataKeyNames = new string[] { "Dia", "HoraInicio" };
        dgvHorarios.DataBind();
        ViewState["Clase"] = clase;
        
    }

    protected void  ddlAgregarHorario_Click(object sender, EventArgs e)
    {
         try
        {
            Clase clase = new Clase();
            Horarios horario = new Horarios();
            clase = (Clase)ViewState["Clase"];
            horario.Dia = ddlDia.SelectedValue;
            horario.HoraInicio = new TimeSpan(int.Parse(ddlHoraInicio.SelectedValue), int.Parse(ddlMinutosInicio.SelectedValue), 0);
            horario.HoraFin = new TimeSpan(int.Parse(ddlHoraFin.SelectedValue), int.Parse(ddlMinutosFin.SelectedValue), 0);
            if (ClaseDAO.validarHorarios(horario, clase))
            {
                HorarioDAO.agregarHorario(clase.Id, horario);
                lblHorario.Text = "Horario agregado correctamente";
                
            }
            else
            {
                lblHorario.Text = "El dia que intenta ingresar ya tiene una clase o ingreso una hora de inicio superior a una hora de fin";
            }
            cargarGrilla();
        }
        catch (SystemException ex)
        {
            lblError.Text = "Error al agregar el horario: " + ex.Message;
        }

    }
    private void cargaComboHoras()
    {
        if (ddlHoraInicio.Items.Count == 0 && ddlHoraFin.Items.Count == 0 && ddlMinutosFin.Items.Count == 0 && ddlMinutosInicio.Items.Count == 0)
        {
            for (int i = 8; i <= 22; i++)
            {
                ddlHoraInicio.Items.Add(new ListItem(i.ToString(), i.ToString()));
                int iFin = i + 1;
                ddlHoraFin.Items.Add(new ListItem(iFin.ToString(), iFin.ToString()));
            }

            for (int i = 0; i <= 59; i = i + 5)
            {
                string minutos = i.ToString();
                if (minutos.Length == 1)
                    minutos = string.Concat("0", minutos);
                ddlMinutosInicio.Items.Add(new ListItem(minutos, minutos));
                ddlMinutosFin.Items.Add(new ListItem(minutos, minutos));
            }
        }
    }

    protected void dgvHorarios_SelectedIndexChanged(object sender, EventArgs e)
    {
        int claId = int.Parse(txtIdClase.Value);
        Horarios hor = new Horarios();
        hor.HoraInicio = TimeSpan.Parse(dgvHorarios.SelectedRow.Cells[1].Text);
        hor.Dia = dgvHorarios.SelectedRow.Cells[0].Text;
        HorarioDAO.bajaHorario(claId,hor);
        cargarGrilla();
    }
}